home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue42 / construc / UNIT1.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-01-11  |  4.5 KB  |  161 lines

  1. unit Unit1;
  2. {.$R+}
  3. interface
  4. uses
  5.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  6.   ExtCtrls, StdCtrls, ComCtrls, Buttons, DrBobNEW, Grids;
  7.  
  8. type
  9.   TFormNews = class(TForm)
  10.     ToolBar: TPanel;
  11.     StatusBar: TStatusBar;
  12.     MemoStatus: TMemo;
  13.     ListBoxNewsGroups: TListBox;
  14.     Splitter: TSplitter;
  15.     MemoArticle: TMemo;
  16.     BtnConnect: TSpeedButton;
  17.     BtnDisconnect: TSpeedButton;
  18.     BtnJoin: TSpeedButton;
  19.     BNNTP: TBNNTP;
  20.     StringGridArticles: TStringGrid;
  21.     BtnPostReply: TSpeedButton;
  22.     procedure BtnConnectClick(Sender: TObject);
  23.     procedure BtnDisconnectClick(Sender: TObject);
  24.     procedure BtnJoinClick(Sender: TObject);
  25.     procedure FormCreate(Sender: TObject);
  26.     procedure StringGridArticlesClick(Sender: TObject);
  27.     procedure BtnPostReplyClick(Sender: TObject);
  28.   private
  29.     { Private declarations }
  30.   public
  31.     { Public declarations }
  32.   end;
  33.  
  34. var
  35.   FormNews: TFormNews;
  36.  
  37. implementation
  38. {$R *.DFM}
  39. uses
  40.   Unit2;
  41.  
  42. procedure TFormNews.FormCreate(Sender: TObject);
  43. begin
  44.   BNNTP.NewsServer := { 'news.shoresoft.com' } '194.229.217.92';
  45.   with StringGridArticles do
  46.   begin
  47.     ColWidths[0] := 42;
  48.     ColWidths[1] := 156;
  49.     ColWidths[2] := 200;
  50.     ColWidths[3] := 200;
  51.     Cells[0,0] := 'Nr.';
  52.     Cells[1,0] := 'From:';
  53.     Cells[2,0] := 'Subject:';
  54.     Cells[3,0] := 'Date:'
  55.   end
  56. end;
  57.  
  58. procedure TFormNews.BtnConnectClick(Sender: TObject);
  59. var
  60.   i: Integer;
  61. begin
  62.   BtnConnect.Enabled := False;
  63.   BNNTP.StatusMemo := MemoStatus;
  64.   MemoStatus.Lines.Add('BNNTP.Connect; { before }');
  65.   BNNTP.Connect;
  66.   MemoStatus.Lines.Add('BNNTP.Connect; { after }');
  67.   ListBoxNewsGroups.Items.Clear;
  68.   for i:=0 to Pred(BNNTP.NewsGroups) do
  69.     ListBoxNewsGroups.Items.Add(BNNTP.NewsGroup[i]);
  70.   BtnDisconnect.Enabled := True;
  71.   BtnJoin.Enabled := ListBoxNewsGroups.Items.Count > 0;
  72. end;
  73.  
  74. procedure TFormNews.BtnDisconnectClick(Sender: TObject);
  75. var
  76.   i: Integer;
  77. begin
  78.   ListBoxNewsGroups.Items.Clear;
  79.   for i:=1 to Pred(StringGridArticles.RowCount) do
  80.   begin
  81.     StringGridArticles.Cells[0,i] := '';
  82.     StringGridArticles.Cells[1,i] := '';
  83.     StringGridArticles.Cells[2,i] := '';
  84.     StringGridArticles.Cells[3,i] := '';
  85.   end;
  86.   MemoArticle.Clear;
  87.   BNNTP.Disconnect;
  88.   BtnConnect.Enabled := True;
  89.   BtnDisconnect.Enabled := False;
  90.   BtnJoin.Enabled := False;
  91. end;
  92.  
  93. procedure TFormNews.BtnJoinClick(Sender: TObject);
  94. var
  95.   i,j: Integer;
  96.   Article: String;
  97. begin
  98.   if ListBoxNewsGroups.ItemIndex >= 0 then
  99.   begin
  100.     BtnPostReply.Enabled := not BNNTP.ReadOnly;
  101.     StatusBar.SimpleText := ListBoxNewsGroups.Items[ListBoxNewsGroups.ItemIndex];
  102.     BNNTP.JoinNewsGroup(ListBoxNewsGroups.Items[ListBoxNewsGroups.ItemIndex])
  103.   end;
  104.   for i:=1 to Pred(StringGridArticles.RowCount) do
  105.   begin
  106.     StringGridArticles.Cells[0,i] := '';
  107.     StringGridArticles.Cells[1,i] := '';
  108.     StringGridArticles.Cells[2,i] := '';
  109.     StringGridArticles.Cells[3,i] := '';
  110.   end;
  111.   for i:=BNNTP.FirstArticle to BNNTP.LastArticle do
  112.   begin
  113.     BNNTP.ReadArticle(i);
  114.     StringGridArticles.Cells[0,i-BNNTP.FirstArticle+1] := IntToStr(i);
  115.     Article := BNNTP.Article[i];
  116.     j := Pos('From: ',Article);
  117.     Delete(Article,1,j+5);
  118.     j := Pos(#13,Article);
  119.     StringGridArticles.Cells[1,i-BNNTP.FirstArticle+1] := Copy(Article,1,j-1);
  120.     Article := BNNTP.Article[i];
  121.     j := Pos('Subject: ',Article);
  122.     Delete(Article,1,j+8);
  123.     j := Pos(#13,Article);
  124.     StringGridArticles.Cells[2,i-BNNTP.FirstArticle+1] := Copy(Article,1,j-1);
  125.     Article := BNNTP.Article[i];
  126.     j := Pos('Date: ',Article);
  127.     Delete(Article,1,j+5);
  128.     j := Pos(#13,Article);
  129.     StringGridArticles.Cells[3,i-BNNTP.FirstArticle+1] := Copy(Article,1,j-1);
  130.   end;
  131.   StringGridArticles.Row := 1;
  132.   StringGridArticlesClick(Sender)
  133. end;
  134.  
  135. procedure TFormNews.StringGridArticlesClick(Sender: TObject);
  136. begin
  137.   MemoArticle.Text := BNNTP.Article[StringGridArticles.Row+BNNTP.FirstArticle-1]
  138. end;
  139.  
  140. procedure TFormNews.BtnPostReplyClick(Sender: TObject);
  141. begin
  142.   with TFormPostReply.Create(Self) do
  143.   try
  144.     if ShowModal = mrOk then
  145.     begin
  146.       MemoArticle.Lines.Insert(0,'');
  147.       MemoArticle.Lines.Insert(0,'Newsgroups: '+StatusBar.SimpleText);
  148.       MemoArticle.Lines.Insert(0,'Subject: '+EditSubject.Text);
  149.       MemoArticle.Lines.Insert(0,'Date: '+EditDate.Text);
  150.       MemoArticle.Lines.Insert(0,'From: '+EditFrom.Text);
  151.       MemoArticle.Lines.Add('.');
  152.       BNNTP.PostArticle(MemoArticle.Text)
  153.     end
  154.   finally
  155.     Free
  156.   end
  157. end;
  158.  
  159. end.
  160.  
  161.